(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
0(#) → #
+(#, x) → x
+(x, #) → x
+(0(x), 0(y)) → 0(+(x, y))
+(0(x), 1(y)) → 1(+(x, y))
+(1(x), 0(y)) → 1(+(x, y))
+(0(x), j(y)) → j(+(x, y))
+(j(x), 0(y)) → j(+(x, y))
+(1(x), 1(y)) → j(+(+(x, y), 1(#)))
+(j(x), j(y)) → 1(+(+(x, y), j(#)))
+(1(x), j(y)) → 0(+(x, y))
+(j(x), 1(y)) → 0(+(x, y))
+(+(x, y), z) → +(x, +(y, z))
opp(#) → #
opp(0(x)) → 0(opp(x))
opp(1(x)) → j(opp(x))
opp(j(x)) → 1(opp(x))
-(x, y) → +(x, opp(y))
*(#, x) → #
*(0(x), y) → 0(*(x, y))
*(1(x), y) → +(0(*(x, y)), y)
*(j(x), y) → -(0(*(x, y)), y)
*(*(x, y), z) → *(x, *(y, z))
*(+(x, y), z) → +(*(x, z), *(y, z))
*(x, +(y, z)) → +(*(x, y), *(x, z))
Rewrite Strategy: FULL
(1) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(2) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
0(#) → #
+'(#, x) → x
+'(x, #) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(0(x), j(y)) → j(+'(x, y))
+'(j(x), 0(y)) → j(+'(x, y))
+'(1(x), 1(y)) → j(+'(+'(x, y), 1(#)))
+'(j(x), j(y)) → 1(+'(+'(x, y), j(#)))
+'(1(x), j(y)) → 0(+'(x, y))
+'(j(x), 1(y)) → 0(+'(x, y))
+'(+'(x, y), z) → +'(x, +'(y, z))
opp(#) → #
opp(0(x)) → 0(opp(x))
opp(1(x)) → j(opp(x))
opp(j(x)) → 1(opp(x))
-(x, y) → +'(x, opp(y))
*'(#, x) → #
*'(0(x), y) → 0(*'(x, y))
*'(1(x), y) → +'(0(*'(x, y)), y)
*'(j(x), y) → -(0(*'(x, y)), y)
*'(*'(x, y), z) → *'(x, *'(y, z))
*'(+'(x, y), z) → +'(*'(x, z), *'(y, z))
*'(x, +'(y, z)) → +'(*'(x, y), *'(x, z))
S is empty.
Rewrite Strategy: FULL
(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(4) Obligation:
TRS:
Rules:
0(#) → #
+'(#, x) → x
+'(x, #) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(0(x), j(y)) → j(+'(x, y))
+'(j(x), 0(y)) → j(+'(x, y))
+'(1(x), 1(y)) → j(+'(+'(x, y), 1(#)))
+'(j(x), j(y)) → 1(+'(+'(x, y), j(#)))
+'(1(x), j(y)) → 0(+'(x, y))
+'(j(x), 1(y)) → 0(+'(x, y))
+'(+'(x, y), z) → +'(x, +'(y, z))
opp(#) → #
opp(0(x)) → 0(opp(x))
opp(1(x)) → j(opp(x))
opp(j(x)) → 1(opp(x))
-(x, y) → +'(x, opp(y))
*'(#, x) → #
*'(0(x), y) → 0(*'(x, y))
*'(1(x), y) → +'(0(*'(x, y)), y)
*'(j(x), y) → -(0(*'(x, y)), y)
*'(*'(x, y), z) → *'(x, *'(y, z))
*'(+'(x, y), z) → +'(*'(x, z), *'(y, z))
*'(x, +'(y, z)) → +'(*'(x, y), *'(x, z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
(5) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
+',
opp,
*'They will be analysed ascendingly in the following order:
+' < *'
(6) Obligation:
TRS:
Rules:
0(
#) →
#+'(
#,
x) →
x+'(
x,
#) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
0(
x),
j(
y)) →
j(
+'(
x,
y))
+'(
j(
x),
0(
y)) →
j(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
j(
+'(
+'(
x,
y),
1(
#)))
+'(
j(
x),
j(
y)) →
1(
+'(
+'(
x,
y),
j(
#)))
+'(
1(
x),
j(
y)) →
0(
+'(
x,
y))
+'(
j(
x),
1(
y)) →
0(
+'(
x,
y))
+'(
+'(
x,
y),
z) →
+'(
x,
+'(
y,
z))
opp(
#) →
#opp(
0(
x)) →
0(
opp(
x))
opp(
1(
x)) →
j(
opp(
x))
opp(
j(
x)) →
1(
opp(
x))
-(
x,
y) →
+'(
x,
opp(
y))
*'(
#,
x) →
#*'(
0(
x),
y) →
0(
*'(
x,
y))
*'(
1(
x),
y) →
+'(
0(
*'(
x,
y)),
y)
*'(
j(
x),
y) →
-(
0(
*'(
x,
y)),
y)
*'(
*'(
x,
y),
z) →
*'(
x,
*'(
y,
z))
*'(
+'(
x,
y),
z) →
+'(
*'(
x,
z),
*'(
y,
z))
*'(
x,
+'(
y,
z)) →
+'(
*'(
x,
y),
*'(
x,
z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
Generator Equations:
gen_#:1:j2_2(0) ⇔ #
gen_#:1:j2_2(+(x, 1)) ⇔ 1(gen_#:1:j2_2(x))
The following defined symbols remain to be analysed:
+', opp, *'
They will be analysed ascendingly in the following order:
+' < *'
(7) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol +'.
(8) Obligation:
TRS:
Rules:
0(
#) →
#+'(
#,
x) →
x+'(
x,
#) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
0(
x),
j(
y)) →
j(
+'(
x,
y))
+'(
j(
x),
0(
y)) →
j(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
j(
+'(
+'(
x,
y),
1(
#)))
+'(
j(
x),
j(
y)) →
1(
+'(
+'(
x,
y),
j(
#)))
+'(
1(
x),
j(
y)) →
0(
+'(
x,
y))
+'(
j(
x),
1(
y)) →
0(
+'(
x,
y))
+'(
+'(
x,
y),
z) →
+'(
x,
+'(
y,
z))
opp(
#) →
#opp(
0(
x)) →
0(
opp(
x))
opp(
1(
x)) →
j(
opp(
x))
opp(
j(
x)) →
1(
opp(
x))
-(
x,
y) →
+'(
x,
opp(
y))
*'(
#,
x) →
#*'(
0(
x),
y) →
0(
*'(
x,
y))
*'(
1(
x),
y) →
+'(
0(
*'(
x,
y)),
y)
*'(
j(
x),
y) →
-(
0(
*'(
x,
y)),
y)
*'(
*'(
x,
y),
z) →
*'(
x,
*'(
y,
z))
*'(
+'(
x,
y),
z) →
+'(
*'(
x,
z),
*'(
y,
z))
*'(
x,
+'(
y,
z)) →
+'(
*'(
x,
y),
*'(
x,
z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
Generator Equations:
gen_#:1:j2_2(0) ⇔ #
gen_#:1:j2_2(+(x, 1)) ⇔ 1(gen_#:1:j2_2(x))
The following defined symbols remain to be analysed:
opp, *'
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol opp.
(10) Obligation:
TRS:
Rules:
0(
#) →
#+'(
#,
x) →
x+'(
x,
#) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
0(
x),
j(
y)) →
j(
+'(
x,
y))
+'(
j(
x),
0(
y)) →
j(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
j(
+'(
+'(
x,
y),
1(
#)))
+'(
j(
x),
j(
y)) →
1(
+'(
+'(
x,
y),
j(
#)))
+'(
1(
x),
j(
y)) →
0(
+'(
x,
y))
+'(
j(
x),
1(
y)) →
0(
+'(
x,
y))
+'(
+'(
x,
y),
z) →
+'(
x,
+'(
y,
z))
opp(
#) →
#opp(
0(
x)) →
0(
opp(
x))
opp(
1(
x)) →
j(
opp(
x))
opp(
j(
x)) →
1(
opp(
x))
-(
x,
y) →
+'(
x,
opp(
y))
*'(
#,
x) →
#*'(
0(
x),
y) →
0(
*'(
x,
y))
*'(
1(
x),
y) →
+'(
0(
*'(
x,
y)),
y)
*'(
j(
x),
y) →
-(
0(
*'(
x,
y)),
y)
*'(
*'(
x,
y),
z) →
*'(
x,
*'(
y,
z))
*'(
+'(
x,
y),
z) →
+'(
*'(
x,
z),
*'(
y,
z))
*'(
x,
+'(
y,
z)) →
+'(
*'(
x,
y),
*'(
x,
z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
Generator Equations:
gen_#:1:j2_2(0) ⇔ #
gen_#:1:j2_2(+(x, 1)) ⇔ 1(gen_#:1:j2_2(x))
The following defined symbols remain to be analysed:
*'
(11) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
*'(
gen_#:1:j2_2(
n6452509_2),
gen_#:1:j2_2(
0)) →
gen_#:1:j2_2(
0), rt ∈ Ω(1 + n6452509
2)
Induction Base:
*'(gen_#:1:j2_2(0), gen_#:1:j2_2(0)) →RΩ(1)
#
Induction Step:
*'(gen_#:1:j2_2(+(n6452509_2, 1)), gen_#:1:j2_2(0)) →RΩ(1)
+'(0(*'(gen_#:1:j2_2(n6452509_2), gen_#:1:j2_2(0))), gen_#:1:j2_2(0)) →IH
+'(0(gen_#:1:j2_2(0)), gen_#:1:j2_2(0)) →RΩ(1)
+'(#, gen_#:1:j2_2(0)) →RΩ(1)
gen_#:1:j2_2(0)
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(12) Complex Obligation (BEST)
(13) Obligation:
TRS:
Rules:
0(
#) →
#+'(
#,
x) →
x+'(
x,
#) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
0(
x),
j(
y)) →
j(
+'(
x,
y))
+'(
j(
x),
0(
y)) →
j(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
j(
+'(
+'(
x,
y),
1(
#)))
+'(
j(
x),
j(
y)) →
1(
+'(
+'(
x,
y),
j(
#)))
+'(
1(
x),
j(
y)) →
0(
+'(
x,
y))
+'(
j(
x),
1(
y)) →
0(
+'(
x,
y))
+'(
+'(
x,
y),
z) →
+'(
x,
+'(
y,
z))
opp(
#) →
#opp(
0(
x)) →
0(
opp(
x))
opp(
1(
x)) →
j(
opp(
x))
opp(
j(
x)) →
1(
opp(
x))
-(
x,
y) →
+'(
x,
opp(
y))
*'(
#,
x) →
#*'(
0(
x),
y) →
0(
*'(
x,
y))
*'(
1(
x),
y) →
+'(
0(
*'(
x,
y)),
y)
*'(
j(
x),
y) →
-(
0(
*'(
x,
y)),
y)
*'(
*'(
x,
y),
z) →
*'(
x,
*'(
y,
z))
*'(
+'(
x,
y),
z) →
+'(
*'(
x,
z),
*'(
y,
z))
*'(
x,
+'(
y,
z)) →
+'(
*'(
x,
y),
*'(
x,
z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
Lemmas:
*'(gen_#:1:j2_2(n6452509_2), gen_#:1:j2_2(0)) → gen_#:1:j2_2(0), rt ∈ Ω(1 + n64525092)
Generator Equations:
gen_#:1:j2_2(0) ⇔ #
gen_#:1:j2_2(+(x, 1)) ⇔ 1(gen_#:1:j2_2(x))
No more defined symbols left to analyse.
(14) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
*'(gen_#:1:j2_2(n6452509_2), gen_#:1:j2_2(0)) → gen_#:1:j2_2(0), rt ∈ Ω(1 + n64525092)
(15) BOUNDS(n^1, INF)
(16) Obligation:
TRS:
Rules:
0(
#) →
#+'(
#,
x) →
x+'(
x,
#) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
0(
x),
j(
y)) →
j(
+'(
x,
y))
+'(
j(
x),
0(
y)) →
j(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
j(
+'(
+'(
x,
y),
1(
#)))
+'(
j(
x),
j(
y)) →
1(
+'(
+'(
x,
y),
j(
#)))
+'(
1(
x),
j(
y)) →
0(
+'(
x,
y))
+'(
j(
x),
1(
y)) →
0(
+'(
x,
y))
+'(
+'(
x,
y),
z) →
+'(
x,
+'(
y,
z))
opp(
#) →
#opp(
0(
x)) →
0(
opp(
x))
opp(
1(
x)) →
j(
opp(
x))
opp(
j(
x)) →
1(
opp(
x))
-(
x,
y) →
+'(
x,
opp(
y))
*'(
#,
x) →
#*'(
0(
x),
y) →
0(
*'(
x,
y))
*'(
1(
x),
y) →
+'(
0(
*'(
x,
y)),
y)
*'(
j(
x),
y) →
-(
0(
*'(
x,
y)),
y)
*'(
*'(
x,
y),
z) →
*'(
x,
*'(
y,
z))
*'(
+'(
x,
y),
z) →
+'(
*'(
x,
z),
*'(
y,
z))
*'(
x,
+'(
y,
z)) →
+'(
*'(
x,
y),
*'(
x,
z))
Types:
0 :: #:1:j → #:1:j
# :: #:1:j
+' :: #:1:j → #:1:j → #:1:j
1 :: #:1:j → #:1:j
j :: #:1:j → #:1:j
opp :: #:1:j → #:1:j
- :: #:1:j → #:1:j → #:1:j
*' :: #:1:j → #:1:j → #:1:j
hole_#:1:j1_2 :: #:1:j
gen_#:1:j2_2 :: Nat → #:1:j
Lemmas:
*'(gen_#:1:j2_2(n6452509_2), gen_#:1:j2_2(0)) → gen_#:1:j2_2(0), rt ∈ Ω(1 + n64525092)
Generator Equations:
gen_#:1:j2_2(0) ⇔ #
gen_#:1:j2_2(+(x, 1)) ⇔ 1(gen_#:1:j2_2(x))
No more defined symbols left to analyse.
(17) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
*'(gen_#:1:j2_2(n6452509_2), gen_#:1:j2_2(0)) → gen_#:1:j2_2(0), rt ∈ Ω(1 + n64525092)
(18) BOUNDS(n^1, INF)